package proyecto.quiniela;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import proyecto.tools.AlertProgressBar;
import temporadas.Partido;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.Toast;

public class Miquiniela extends Activity {
	
	private LinkedHashMap<Partido, String> m;
	
	//manejador para la barra de carga
	private Handler manejador;
	
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.quiniela_estadistica);
        
        manejador = new Handler();
        
        //Recogemos los widgets de la interfaz
        final ImageButton guarda = (ImageButton)findViewById(R.id.guarda_imgButton);
        
        
        //si se pulsa guardar recorremos la quiniela y volcamos la info a un fichero
        guarda.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				
				TableLayout t = (TableLayout)findViewById(R.id.contenedorQuiniela);
				
				  try {
					  FileWriter f = new FileWriter("/sdcard/miquiniela.txt");
	                    //escribe = new PrintWriter(f);
	                    for (int i = 0; i < t.getChildCount(); i++) {
	                       
	                        View table = t.getChildAt(i);
	                        if(table.equals(table.findViewById(R.id.partido))){
	                                                   
	                            final TextView eqVisit = (TextView)table.findViewById(R.id.eqFuera);
	                            f.write(eqVisit.getText().toString());
	                            f.write(',');
	                            final TextView eqLocal = (TextView)table.findViewById(R.id.eqCasa);
	                            f.write(eqLocal.getText().toString());
	                            f.write(',');
	                                           
	                            //Creamos la variables para el control de tachados
	                            FrameLayout fl1 = (FrameLayout)table.findViewById(R.id.uno);
	                            FrameLayout flX = (FrameLayout)table.findViewById(R.id.equis);
	                            FrameLayout fl2 = (FrameLayout)table.findViewById(R.id.dos);
	                           
	                            if(fl1.findViewById(R.id.tachado).isShown()){
	                            	 f.write('1');
	                            }
	                            
	                            if(flX.findViewById(R.id.tachado).isShown()){
	                            	 f.write('X');
	                            	 
	                            }
	                            if(fl2.findViewById(R.id.tachado).isShown()){
	                            	 f.write('2');
	                            	 
	                            }
	                            f.write("\n");               
	                        }
	                       
	                    }
	                    f.close();
	                    
	                    Toast.makeText(v.getContext(), "PRONÓSTICOS GUARDADOS", Toast.LENGTH_SHORT).show();
	                   
	                } catch (FileNotFoundException e) {
	                    e.printStackTrace();
	                } catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
	                   
	               
	            }           
	           
	           
	                           
	            }
	    );
        
        
        //este es el proceso de rellenado de quiniela
        try {
			AlertProgressBar.show(this);
			new Thread(){
				
				public void run(){
					try {
						m = Miquiniela.this.consultaPartidos();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}	
					manejador.post(new Runnable() {
						@Override
						public void run() {
							// TODO Auto-generated method stub
							try {
								
								Miquiniela.this.rellenaQuiniela(m);
								AlertProgressBar.dismiss();
								
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
					});
				}
			}.start();
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			
		               
    }
	    
   public LinkedHashMap<Partido,String> consultaPartidos() throws Exception{
		
	     
	   	//LeeQuinielas siguienteQuiniela;
		//List<Partido> lp;
		
	
	    final TextView fecha = (TextView)findViewById(R.id.fecha_TextView);
	    fecha.setVisibility(View.INVISIBLE);
		//fecha.setText(siguienteQuiniela.getNumJ());
	    
	    String entrada;
	    
	    	    
	    LinkedHashMap<Partido,String> pronosticoQuiniela = new LinkedHashMap<Partido, String>();    
       
       
	    try{
	    	InputStream lector = new FileInputStream("/sdcard/miquiniela.txt");
	       	BufferedReader bf = new BufferedReader(new InputStreamReader(lector)); 
	       	
	       
				   
			while((entrada=bf.readLine())!=null){
				Log.d(" ------------- PRUEBA UNO!!!", entrada);
				int indice = entrada.indexOf(",");
				String equipoL=entrada.substring(0, indice);
				Log.d(" ------------- PRUEBA DOS!!!", equipoL);
				String equipoV=entrada.substring(indice+1, entrada.length()-2);
				Log.d(" ------------- PRUEBA TRES!!!", equipoV);
				String pronostico = new String(entrada.charAt(entrada.length()-1)+"");
				Log.d(" ------------- PRUEBA CUATRO!!!", pronostico);
				
				Partido p = new Partido(equipoL,equipoV,"111111111111111",0);
				
				pronosticoQuiniela.put(p, pronostico);
			}
			
			lector.close();
			bf.close();
	    }catch(FileNotFoundException e){
	    	e.printStackTrace();
	    }catch(IOException e){
	    	e.printStackTrace();
	    }
	    
	    
		return pronosticoQuiniela;
	    	   
	}
     
    
    @SuppressWarnings("unchecked")//<- ni zorra de qué es esto xD
	public void rellenaQuiniela(LinkedHashMap<Partido,String> m) throws Exception{
    	
       	Iterator<?> it = m.entrySet().iterator();
    	
    	TableLayout t = (TableLayout)findViewById(R.id.contenedorQuiniela);
		
    	
    	
		for (int i = 0; i < t.getChildCount(); i++) {
						
			View table = t.getChildAt(i);
			if(table.equals(table.findViewById(R.id.partido))){
				Map.Entry<Partido,String> e = (Map.Entry<Partido,String>)it.next();
				
				final TextView eqVisit = (TextView)table.findViewById(R.id.eqFuera);
				eqVisit.setText(e.getKey().geteVisitante().toLowerCase());
				final TextView eqLocal = (TextView)table.findViewById(R.id.eqCasa);
				eqLocal.setText(e.getKey().geteCasa().toLowerCase());
			
			
				//Creamos la variables para el control de tachados
				FrameLayout fl1 = (FrameLayout)table.findViewById(R.id.uno);
				FrameLayout flX = (FrameLayout)table.findViewById(R.id.equis);
				FrameLayout fl2 = (FrameLayout)table.findViewById(R.id.dos);
				
				
				/*tacha segun datos guardados*/
				if(e.getValue().equals("1")){
					fl1.findViewById(R.id.tachado).setVisibility(View.VISIBLE);
					
				}else if(e.getValue().equals("X")){
					flX.findViewById(R.id.tachado).setVisibility(View.VISIBLE);
					
				}else if(e.getValue().equals("2")){
					fl2.findViewById(R.id.tachado).setVisibility(View.VISIBLE);
					
				}
				
				//control de tachados
				List<FrameLayout> listaIMv = new ArrayList<FrameLayout>();
				listaIMv.add(fl1);
				listaIMv.add(flX);
				listaIMv.add(fl2);
				
				fl1.setOnClickListener(new MiOnClickListener(listaIMv));
				fl1.setClickable(true);
				flX.setOnClickListener(new MiOnClickListener(listaIMv));
				flX.setClickable(true);
				fl2.setOnClickListener(new MiOnClickListener(listaIMv));
				fl2.setClickable(true);
				
				
			}
			
		}
	}			
    
    
    
    private class MiOnClickListener implements OnClickListener{

    	private List<FrameLayout> listaIMv;
		private String tag = "MiOnClickListener";
		

		public MiOnClickListener(List<FrameLayout> listaIMv) {
			super();
			this.listaIMv = listaIMv;
		}


		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			FrameLayout fl = (FrameLayout)v;
			Log.d(tag , "*******************view = "+listaIMv.size());
			for (FrameLayout flLista : listaIMv) {
				if(flLista.equals(fl)){
					flLista.findViewById(R.id.tachado).setVisibility(View.VISIBLE);
					
				}
				else{
					flLista.findViewById(R.id.tachado).setVisibility(View.INVISIBLE);
				}
			}
		}
    	
    }	
	

}
